home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_pcdp / ada / hard.ada < prev    next >
Text File  |  1996-01-30  |  1KB  |  71 lines

  1. package Hardware_Primitives is
  2.   procedure Test_and_Set(L: out Integer);
  3.   procedure Zero;
  4.  
  5.   procedure Exchange(L: in out Integer);
  6. end Hardware_Primitives;
  7.  
  8. package body Hardware_Primitives is
  9.  
  10.   task TS_Task is
  11.     entry Test_and_Set(L: out Integer);
  12.     entry Zero;
  13.   end TS_Task;
  14.  
  15.   task EX_Task is
  16.     entry Exchange(L: in out Integer);
  17.   end EX_Task;
  18.  
  19.   task body TS_Task is
  20.     C: Integer := 0;
  21.   begin
  22.     loop
  23.       select
  24.         accept Test_and_Set(L: out Integer) do
  25.           L := C;
  26.           C := 1;
  27.         end Test_and_Set;
  28.       or 
  29.         accept Zero do
  30.           C := 0;
  31.         end Zero;
  32.       or
  33.         terminate;
  34.       end select;
  35.     end loop;
  36.   end TS_Task;
  37.  
  38.   task body EX_Task is
  39.     C: Integer := 1;
  40.     Temp: Integer;
  41.   begin
  42.     loop
  43.       select
  44.         accept Exchange(L: in out Integer) do
  45.           Temp := L;
  46.           L := C;
  47.           C := Temp;
  48.         end Exchange;
  49.       or
  50.         terminate;
  51.       end select;
  52.     end loop;
  53.   end EX_Task;
  54.  
  55.   procedure Test_and_Set(L: out Integer) is
  56.   begin
  57.     TS_Task.Test_and_Set(L);
  58.   end Test_and_Set;
  59.  
  60.   procedure Zero is
  61.   begin
  62.     TS_Task.Zero;
  63.   end Zero;
  64.  
  65.   procedure Exchange(L: in out Integer) is
  66.   begin
  67.     EX_Task.Exchange(L);
  68.   end Exchange;
  69.  
  70. end Hardware_Primitives;
  71.